class Neuron:
    def __init__(self, threshold=-50.0, tau=10.0, v_rest=-70.0):
        """初始化神经元参数"""
        self.v = v_rest           # 膜电位，初始值为静息电位
        self.threshold = threshold  # 发放阈值 (mV)
        self.tau = tau            # 时间常数 (ms)
        self.v_rest = v_rest      # 静息电位 (mV)
        self.spike_history = []   # 记录尖峰时间

    def update(self, current, dt):
        """更新神经元状态"""
        # 膜电位衰减（泄漏项）和输入电流积分
        dv = (-(self.v - self.v_rest) + current) / self.tau * dt
        self.v += dv

        # 检查是否达到阈值并产生尖峰
        if self.v >= self.threshold:
            self.spike_history.append(1)  # 记录尖峰
            self.v = self.v_rest         # 重置膜电位到静息电位
        else:
            self.spike_history.append(0)  # 无尖峰

        return self.spike_history[-1]
